// type LookUp<T extends { type: string;[key: string]: any }, U extends T["type"]> = T extends T ? U extends T["type"]
//     ? T
//     : never : never
//     ;
    type LookUp<U, T> = U extends { type:T } ? U : never
// interface Cat {
//     type: 'cat'
//     breeds: 'Abyssinian' | 'Shorthair' | 'Curl' | 'Bengal'
// }

// interface Dog {
//     type: 'dog'
//     breeds: 'Hound' | 'Brittany' | 'Bulldog' | 'Boxer'
//     color: 'brown' | 'white' | 'black'
// }

// type Animal = Cat | Dog

// type t = LookUp<Animal, 'dog'>

// T extends T ???

// type Example1 = { a: 1; b: 2 } extends { a: 1 } ? true : false // true
// type Example2 = 1 | 2 extends 1 ? true : false // true
//   type tt = 'dog' extends 'dog'?true:false
// type Test<T>= T extends T?T extends Dog?T:never:undefined
// type tt = Test<Animal>

//应该是这样的
// T extends T 相当于
// Cat | Dog extends Cat | Dog 
// Cat - Cat 

// Dog - Dog